# 心灵树洞 - Docker构建文件
# 使用多阶段构建优化镜像体积

# 第一阶段：构建阶段
FROM python:3.9-slim as builder

# 设置工作目录
WORKDIR /app

# 安装系统依赖（构建时需要）
RUN apt-get update && apt-get install -y \
    gcc \
    && rm -rf /var/lib/apt/lists/*

# 复制依赖文件
COPY requirements.txt* ./

# 创建requirements.txt（如果不存在）
RUN echo "flask==2.3.3" > requirements.txt && \
    echo "flask-sqlalchemy==3.0.5" >> requirements.txt

# 安装Python依赖到临时目录
RUN pip install --no-cache-dir --user -r requirements.txt

# 第二阶段：运行阶段
FROM python:3.9-slim

# 设置环境变量
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV FLASK_APP=app.py
ENV FLASK_ENV=production

# 创建非root用户
RUN groupadd -r appuser && useradd -r -g appuser appuser

# 设置工作目录
WORKDIR /app

# 复制应用代码
COPY . .

# 从构建阶段复制Python包
COPY --from=builder /root/.local /home/appuser/.local

# 创建数据库目录并设置权限，同时设置启动脚本权限
RUN mkdir -p /app/data && \
    chmod +x /app/start.sh && \
    chown -R appuser:appuser /app && \
    chown -R appuser:appuser /home/appuser/.local

# 切换到非root用户
USER appuser

# 设置PATH环境变量
ENV PATH=/home/appuser/.local/bin:$PATH
ENV PYTHONPATH=/home/appuser/.local/lib/python3.9/site-packages:$PYTHONPATH

# 暴露端口
EXPOSE 5000

# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD python -c "import requests; requests.get('http://localhost:5000')" || exit 1

# 启动命令
CMD ["./start.sh"]

# 构建信息标签
LABEL maintainer="Heart Hole Project" \
      version="1.0" \
      description="心灵树洞 - 匿名心理倾诉平台" \
      build-date="2024"